//Generator配和promise的异步方案

function* main() {
  try {
    const user = yield ajax("/api/users.json");
    console.log(user);
    const posts = yield ajax("/api/posts.json");
    console.log(posts);
  } catch (e) {
    console.log(e);
  }
}
//生成器函数执行器
function co(generator) {
  const g = generator();
  function handleResult(result) {
    if (result.done) return;
    result.value.then(
      (data) => {
        handleResult(g.next(data));
      },
      (error) => {
        g.throw(error);
      }
    );
  }
  handleResult(g.next());
}

co(main);

// const g = main();

// //递归
// function handleResult(result) {
//   if (result.done) return;
//   result.value.then(
//     (data) => {
//       handleResult(g.next(data));
//     },
//     (error) => {
//       g.throw(error);
//     }
//   );
// }

// handleResult(g.next());

// const result = g.next();
// result.value.then((data) => {
//   const result2 = g.next(data);
//   result2.then((data) => {
//     const result3 = g.next(data);
//   });
// });
